import java.io.File;
import java.net.URL;
import java.util.Arrays;

import static java.lang.System.out;

public class DealScore {

	/**
	 * 显示double数组ascore中的成绩，用空格分隔
	 * @param ascore
	 */
	public static void show(double[] ascore) {
		// TODO：补充完成
		for(double score:ascore)
		{
			out.print(score+" ");
		}

	}

	/**
	 * 求double数组ascore中的成绩总和，并返回
	 * @param ascore
	 * @return
	 */
	public static double getSum(double[] ascore) {
		// TODO：补充完成
		double sum=0;
		for(int i=0;i<ascore.length;i++){
			sum+=ascore[i];
		}
		return sum;
	}

	/**
	 * 求double数组ascore中的成绩平均分，并返回
	 * @param ascore
	 * @return
	 */
	public static double getAvg(double[] ascore) {
		// TODO：补充完成
 double sum=getSum(ascore);
 double avg=sum/ascore.length;
 return avg;
	}

	/**
	 * 求double数组ascore中的成绩最高分，并返回
	 * @param ascore
	 * @return
	 */
	public static double getMax(double[] ascore) {
		// TODO：补充完成
		double max=0;
		for(int i=0;i<ascore.length;i++){
			if(max<ascore[i]){
				max=ascore[i];
			}
		}
		return max;
	}

	/**
	 * 求double数组ascore中的成绩最低分，并返回
	 * @param ascore
	 * @return
	 */
	public static double getMin(double[] ascore) {
		// TODO：补充完成
		double min=ascore[0];
		for(int i=1;i<ascore.length;i++){
			if(ascore[i]<min){
				min=ascore[i];
			}
		}
		return min;
	}

	/**
	 * 对参数数组进行升序排列
	 * @param ascore
	 */
	public static void ascSort(double[] ascore) {
		Arrays.sort(ascore);
	}

	/**
	 * 对参数数组进行降序排列
	 * 
	 * @param ascore
	 */
	public static void descSort(double[] ascore) {
		// TODO：补充完成
//		使用选择排序完成降序排序
		for(int i=0;i<ascore.length;i++){
		double	max=ascore[i];
			for(int j=i+1;j<ascore.length;j++){
				if(ascore[j]>ascore[i]){
					max=ascore[j];
				    ascore[j]=ascore[i];
					ascore[i]=max;
				}
			}
		}
	}

	public static void main(String[] args) {
		String scorefile = "score.txt";
		URL url = DealScore.class.getResource(scorefile);
		
		/* 去掉file:\ */
		String files = url.toString().substring(6); 
		
		File file = new File(files);

		/* 首先从文件首行，取到数组长度  */
		int len = Txt2Array.getLen(file);
		/*---- TODO：开始----*/
		/* 创建数组并从文件中读取数据 */
		double[] ascore = new double[len];
		Txt2Array.txt2Array(file, ascore);
		/*---- TODO：结束----*/

		/* 输出原始分数序列/升序序列/降序序列  */
		out.println("原始序列:");
		show(ascore); // !
		
		out.println("\n升序序列:");
		ascSort(ascore); 
		show(ascore);
		
		out.println("\n降序序列:");
		descSort(ascore); 
		show(ascore);
		
		/* 输出分数处理结果  */
		out.println("\nSum=" + getSum(ascore)); // !
		out.println("Avg=" + getAvg(ascore)); // !
		out.println("Max=" + getMax(ascore)); // !
		out.println("Min=" + getMin(ascore)); // !
	}
}
